import dayjs from 'dayjs';
export default {
	methods: {
		/**
		 * 根据不同时间，输出不同的时间格式
		 * @param {*} date 需转化的时间（时间戳、日期都可）
		 * @returns {object} obj.time  转化后的时间; obj.type 类型 1：新消息，2：当天消息,3：昨天消息，4：今年消息，5：其他消息
		 */
		toggleTime(date) {
			var localLan = uni.getLocale();
			var time;
			var type = this.getDateDiff(date);
			//1：新消息，2：当天消息,3：昨天消息，4：今年消息，5：其他消息
			if (type == 1) {
				time = '刚刚'; //新消息，不显示时间，但是要显示"以下为最新消息"
			} else if (type == 2) {
				time = dayjs(date).format("H:mm"); //当天消息，显示：10:22
			} else if (type == 3) {
				time = dayjs(date).format("昨天 H:mm"); //昨天消息，显示：昨天 20:41
			} else if (type == 4) {
				if (localLan == 'en') {
					time = dayjs(date).format("MM-DD AH:mm")
				} else {
					time = dayjs(date).format("M月D日 AH:mm").replace("AM", "上午").replace("PM",
						"下午"); //今年消息，上午下午，显示：3月17日 下午16:45
				}
			} else if (type == 5) {
				if (localLan == 'en') {
					time = dayjs(date).format("YYYY-MM-DD AH:mm")
				} else {
					time = dayjs(date).format("YYYY年M月D日 AH:mm").replace("AM", "上午").replace("PM",
						"下午"); //其他消息，上午下午，显示：2020年11月2日 下午15:17
				}
			}
			return {
				time: time,
				type: type
			};
		},
		/**
		 * 判断时间展示类型
		 * @param {*} date 时间（时间戳、日期都可）
		 * @returns {number} 类型 1：新消息，2：当天消息,3：昨天消息，4：今年消息，5：其他消息
		 */
		getDateDiff(date) {
			var nowDate = dayjs(new Date()); //当前时间
			var oldDate = dayjs(new Date(date)); //参数时间
			var timeTemp = dayjs(this.getThisTime().now.split(" ")[0] + "00:00").diff(oldDate, 'hour');
			var result;
			//优先判断昨天消息。今年的日期00:00的时间与上一个时间的时间戳小于1天，那就判断为昨天消息
			if ((nowDate.year() - oldDate.year() == 1 || nowDate.month() - oldDate.month() == 1) && timeTemp >= 0 &&
				timeTemp <= 24) {
				result = 3;
			} else if (nowDate.year() - oldDate.year() >= 1) {
				result = 5;
			} else if (nowDate.month() - oldDate.month() >= 1 || nowDate.date() - oldDate.date() >= 2) {
				result = 4;
			} else if (nowDate.date() - oldDate.date() >= 1) {
				result = 3;
			} else if (nowDate.hour() - oldDate.hour() >= 1 || nowDate.minute() - oldDate.minute() >= 5) {
				result = 2;
			} else {
				result = 1;
			}
			return result;
		},
		/**
		 * 获取传入时间或者当前时间对象
		 * @param {*} timeStamp  需转化的时间戳（到秒），不必传，不传默认当前时间
		 * @returns 返回时间对象（年、月、日、时、分、秒等）
		 */
		getThisTime(timeStamp) {
			var myDate = timeStamp ? new Date(parseInt(timeStamp) * 1000) : new Date();

			function p(s) {
				return s < 10 ? '0' + s : s;
			}
			return {
				'year': myDate.getFullYear(),
				'month': myDate.getMonth() + 1,
				'date': myDate.getDate(),
				'h': myDate.getHours(),
				'm': myDate.getMinutes(),
				's': myDate.getSeconds(),
				'now': myDate.getFullYear() + '-' + p(myDate.getMonth() + 1) + "-" + p(myDate.getDate()) + " " + p(
					myDate.getHours()) + ':' + p(myDate.getMinutes()) + ":" + p(myDate.getSeconds())
			};
		},
		/**
		 * 判断两个时间差是否大于x分钟
		 * @param {*} t1 时间1
		 * @param {*} t2 时间2
		 * @param {number} mins 相差几分钟
		 * @returns 
		 */
		compareTimeInterval(t1, t2, mins) {
			return dayjs(t2) - dayjs(t1) >= mins * 60000 ? true : false;
		}
	}
}